The present disclosure, generally, relates to a programmable apparatus, more particularly, to technique for programmable apparatus that includes a physical interface and a function logic circuit.
Programmable apparatus such as Field Programmable Gate Array (FPGA) boards can be developed by using Hardware Description Language (HDL) such as Verilog. In developing user logic on the FPGA board with HDL, a user is required to design both of the user logic that the user wants to execute on the FPGA board and peripheral logic configured to connect the user logic with a physical interface of the FPGA board, separately. Since developing of the peripheral logic around the user logic is rather complex compared to designing the user logic itself, a large portion of workloads would be spent on development of the peripheral logic in some cases.
The FPGA boards can also be developed in Open Computing Language (OpenCL) framework, in which the peripheral logic can be synthesized automatically by simply describing a user algorithm in a high-level language such as C programming language. Regardless of its performance, OpenCL has been attracting attention in recent years due to its higher production efficiency than HDL from the viewpoint of time to market. A custom logic, whose implementation would take typically a few months by using HDL, can be implemented on the FPGA board within a few hours to a few days in the OpenCL framework.
Meanwhile, new techniques have emerged in relation to bus interfaces. For example, a mechanism has been developed for solving cache coherence in hardware on top of the PCIe (Peripheral Component Interconnect Express) protocol stack, which is known as CAPI (Coherent Accelerator Processor Interface).
In order to allow the peripheral logic to be synthesized automatically in the OpenCL framework, there is provided a data structure referred to as a board support package (BSP), which stores hardware information and peripheral logic particular to the FPGA board. Conventionally, a specific BSP for a specific protocol, which may be either PCIe or CAPI, would be used to develop the programmable device.